package xGraphique.xFenetrage.xCarte;

import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;

public class XGestionnaireActionsEtTraceCarte {

	public XEvenementsSurCarte evenements;
	public XTraceCarte dessin;

	private XEvenementsSurCarte evenementsUtilisePrecedemment;

	public XGestionnaireActionsEtTraceCarte(XZoneDeTrace zdt) {
		this.dessin = new XTraceCarte(zdt);
		// setGestionnaireDEvenements(XEvenementsSurCarteEnEdition.getInstance());
		// setGestionnaireDEvenements(XEvenementsSurCarteEnConduite.getInstance(),
		// zdt);
	}

	public void revenirAuGestDEvenementsPrecedent(XZoneDeTrace zdt) {
		setGestionnaireDEvenements(evenementsUtilisePrecedemment, zdt);
	}

	public boolean hasGestionnaireDEvenements(XEvenementsSurCarte esc) {
		return evenements != null && esc.equals(evenements);
	}

	public void setGestionnaireDEvenements(XEvenementsSurCarte esc,
			XZoneDeTrace zdt) {
		if (esc == null)
			return;
		evenementsUtilisePrecedemment = this.evenements;
		this.evenements = esc;
		for (MouseListener ml : zdt.getMouseListeners()) {
			zdt.removeMouseListener(ml);
		}
		for (MouseMotionListener mml : zdt.getMouseMotionListeners()) {
			zdt.removeMouseMotionListener(mml);
		}
		for (MouseWheelListener mwl : zdt.getMouseWheelListeners()) {
			zdt.removeMouseWheelListener(mwl);
		}
		zdt.addMouseListener(evenements);
		zdt.addMouseMotionListener(evenements);
		zdt.addMouseWheelListener(evenements);
		zdt.gatc.dessin.reinitialiser(false);
	}

	public void repaint(Graphics g) {
		dessin.paint(g);
	}

}
